📜 [專欄新文章] Solidity Weekly #20
✍️ mingderwang
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Metamask “Privacy Mode”
前一陣子,Metamask 與其他幾家 Ether 數位錢包公司,為了安全起見,決定改變叫用帳號的流程。舊的 Ðapp 網站需要改寫,才能搭配使用,這裏來做個介紹。
Breaking Change: No Accounts Exposed by Default,這篇文章有做完整的說明,從 2018 年 11 月 6日起,Metamask plugin 錢包與 Status,Mist,以及 ImToken 計畫一起提供一個新而且更安全的方法 (EIP-1102),來讀取錢包帳號的資料,例如它的 balance,交易歷史,以及一些敏感資料,未來錢包的 “Privacy Mode” 將預設為開啟。也就是在使用舊有的 Ðapp 網頁, Metamask “Privacy Mode” 必須是關閉,才能跟以前一樣使用,直接可讀取 Metamask 裡的帳號資料,進行交易。
對程式設計師而言,簡單講就是要叫用一個新的 ethereum.enable() function,它會 return 一個 Promise。如果 user 同意讓 Ðapp 使用他的帳號, 就會回傳 provider 結果,否則回傳 Error。這個 ethereum 物件,是 Metamask 在啟動時,會加到瀏覽器的 window 裡的,所以程式範例如下(僅供參考, 它還可以寫得更好);
import Web3 from ‘web3’
let web3;
if (typeof web3 !== ‘undefined’ && window.ethereum) {
const ethereum = window.ethereum;
ethereum.enable().then((account) => {
const defaultAccount = account[0]
console.log(defaultAccount);}).error(console.log);
web3 = new Web3(web3.currentProvider);// orweb3 = new Web3(ethereum);
} else {console.log('maybe user does not install metamask');
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider(“http://localhost:8545"));
}
v4.14.0 版以後的 Metamask,provider 的 window.ethereum 就開始支援 enable() function,只是預設值是關閉的。
如上圖,新版 MetaMask v5.0.x 設定裡也已經可以看到 Privacy Mode 的開關。目前版本的預設是關著的。以後新版將會預設成開。有些舊 ÐApp 網站沒搭配著修改,就無法使用。但為了相容起見,user 關掉 Privacy Mode,還是能正常使用,但這樣對使用者來講就不安全了。
這個標準定義在 EIP-1102,想深入了解底層的開發者可以參考。
相關 Links:
EIP-1102: How to prepare your dapp
Tutorial — How To Connect A JavaScript Front-End To A Smart Contract On Ethereum
Solidity Weekly #20 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「javascript if undefined」的推薦目錄:
- 關於javascript if undefined 在 Taipei Ethereum Meetup Facebook 的最讚貼文
- 關於javascript if undefined 在 コバにゃんチャンネル Youtube 的最讚貼文
- 關於javascript if undefined 在 大象中醫 Youtube 的精選貼文
- 關於javascript if undefined 在 大象中醫 Youtube 的最佳解答
- 關於javascript if undefined 在 How can I determine if a variable is 'undefined' or 'null'? 的評價
- 關於javascript if undefined 在 Best Way to Check 'Null', 'Undefined' or 'Empty' in JavaScript 的評價
- 關於javascript if undefined 在 Id variable undefined in javascript aura - not getting set in time ... 的評價
- 關於javascript if undefined 在 Using "if" to check variable before usage results in Error ... 的評價
- 關於javascript if undefined 在 [教學]undefined與null的比較 - 米米的部落格 的評價
javascript if undefined 在 コバにゃんチャンネル Youtube 的最讚貼文
javascript if undefined 在 大象中醫 Youtube 的精選貼文
javascript if undefined 在 大象中醫 Youtube 的最佳解答
javascript if undefined 在 Best Way to Check 'Null', 'Undefined' or 'Empty' in JavaScript 的推薦與評價
How to check if result is not ' Null ', ' Undefined ' or 'Empty' in JavaScript while using conditions? Lets discuss ' if not undefined, null or ... ... <看更多>
javascript if undefined 在 Id variable undefined in javascript aura - not getting set in time ... 的推薦與評價
workOrderId"); if(woId != undefined && woId != null && woId != ''){ component.set("v.showSpinner",true); //component.set("v. ... <看更多>
javascript if undefined 在 How can I determine if a variable is 'undefined' or 'null'? 的推薦與評價
... <看更多>